/**
 * 本质上是一个整数规划，不过只有2个变量。
 * 枚举一下即可。
 * max{Ax+By} st. 2x+y<=N, x+2y<=M
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;


using llt = long long;
using Real = double;
using vi = vector<int>;
using pii = pair<int, int>;


int N, M, A, B;

llt proc(){
    llt ans = 0;
    for(int i=0;i<=min(N/2, M);++i){
        int j = min(N - i - i, (M - i) / 2);
        ans = max(ans, A * (i + 0LL) + B * (j + 0LL));
    }
    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--){
        cin >> N >> M >> A >> B;
        cout << proc() << "\n";
    }
    return 0;
}